<?php
include_once('inc/functions.inc.php');
if(!isEmpty(getParam('operation'))){
    
    switch(getParam('operation')){
        case 's':
            save($db);
            break;
            die();
        case 'u':
            update($db);
            break;
        case 'd':
            delete($db);
             break;
      case 'gc':
            getCicloActivo($db);
            break;
    }
}

function save($db){

    $anio = getParam("frmCierre_anio");
    $mes = getParam("mes");
    $fecha_inicio = "";
    $fecha_fin = "";
    $descripcion = "";
    $strQuery = "";
    $empresa = getParam("empresa");
    $arrMeses = array("1"=>"Enero", "2"=>"Febrero", "3"=>"Marzo", "4"=>"Abril", "5"=>"Mayo", "6"=>"Junio", "7"=>"Julio", "8"=>"Agosto", "9"=>"Septiembre", "10"=>"Octubre", "11"=>"Noviembre", "12"=>"Diciembre" );  
    $boolError = false;
    $strError = "";
    $sinTotalDebe = 0;
    $sinTotalHaber = 0;
    
    $strQuery = "SELECT * 
                 FROM   cllg_contab_ciclo 
                 WHERE  MONTH(fecha_inicio) = '{$mes}' 
                 AND    MONTH(fecha_fin) = '{$mes}' 
                 AND    YEAR(fecha_inicio) = '{$anio}' 
                 AND    YEAR(fecha_fin) = '{$anio}'
                 AND    total_activo > 0 
                 AND    total_pasivo > 0
                 AND    fk_empresa = '{$empresa}'";
    $qTMP = $db->query($strQuery);
    $intCicloCerrado = $db->num_rows;
    $db->free_result($qTMP);
    
    if( $intCicloCerrado == 0 ) {
        
        $strQuery ="SELECT  * 
                    FROM    cllg_contab_ciclo 
                    WHERE   MONTH(fecha_inicio) = '{$mes}' 
                    AND     MONTH(fecha_fin) = '{$mes}' 
                    AND     YEAR(fecha_inicio) = '{$anio}' 
                    AND     YEAR(fecha_fin) = '{$anio}'
                    AND     fk_empresa = '{$empresa}'";
        $qTMP = $db->query($strQuery);
        $intNumRows = $db->num_rows;
        $arrTMP = $db->fetch_array($qTMP);
        $db->free_result($qTMP);
        if( $intNumRows > 0) {
            
            $strQuery ="SELECT  CA.id, SUM(IF(CCA.debe=1,CCA.monto,0)) AS total_debe, SUM(IF(CCA.haber=1,CCA.monto,0)) AS total_haber 
                        FROM    cllg_contab_ajuste AS CA, cllg_contab_cuenta_ajuste AS CCA
                        WHERE   CA.id = CCA.ajuste
                        AND     CA.ciclo = '{$arrTMP["codigo"]}'
                        GROUP   BY CA.ciclo, CA.id";
            $qTMP = $db->query($strQuery);
            $intNumRows = $db->num_rows;
            if( $intNumRows > 0 ) {
                while( $rTMP = $db->fetch_array($qTMP) ) {
                    
                    $sinTotalDebe += $rTMP["total_debe"];
                    $sinTotalHaber += $rTMP["total_haber"];
                    if( $rTMP["total_debe"] != $rTMP["total_haber"] ) {
                        $boolError = true;
                        $strError .= (empty($strError))? "" : ", ";
                        $strError .= $rTMP["id"];
                    }
                }
                
                //Si no cuadran partidas muestro cuales son.
                if( $boolError ) {
                    
                    ?>
                    <div class="ui-widget" style="border: 0px solid white; width: 440px; height: auto; vertical-align: bottom;" align="center">
                        <div class="ui-state-error ui-corner-all" style="margin-top: 0px; padding: 0pt 0.7em; height: auto; width: 220px;"> 
                            <p><span class="ui-icon ui-icon-alert" style="float: left; margin-right: 0.3em;"></span>
                            No se puede realizar cierre, las siguientes partidas no cuadran:<br>
                            Partida(s) No. <?php print $strError; ?>
                        </div>
                    </div>
                    <br>
                    <?php
                }
                //Si todas las partidas cuadran cierro el mes.
                else {
                    $strWhere = "       MONTH(fecha_inicio) = '{$mes}' 
                                AND     MONTH(fecha_fin) = '{$mes}' 
                                AND     YEAR(fecha_inicio) = '{$anio}' 
                                AND     YEAR(fecha_fin) = '{$anio}'
                                AND     fk_empresa = '{$empresa}'";
                    $db->query_update('cllg_contab_ciclo', array( 'total_activo'=>sqlValue($sinTotalDebe,'float'), 'total_pasivo'=>sqlValue($sinTotalHaber,'float') ), $strWhere);
                    ?>
                    <div class="ui-widget" style="border: 0px solid white; width: 440px; height: auto; vertical-align: bottom;" align="center">
                        <div class="ui-state-highlight ui-corner-all" style="margin-top: 0px; padding: 0pt 0.7em; height: auto; width: 220px;"> 
                            <p><span class="ui-icon ui-icon-info" style="float: left; margin-right: 0.3em;"></span>
                            <?php print $arrMeses[intval($mes)]." ".$anio; ?> cerrado.
                        </div>
                    </div>
                    <br>
                    <?php
                }    
            }
            //Si no hay partidas para cerrar.
            else {
                ?>
                <div class="ui-widget" style="border: 0px solid white; width: 440px; height: auto; vertical-align: bottom;" align="center">
                    <div class="ui-state-highlight ui-corner-all" style="margin-top: 0px; padding: 0pt 0.7em; height: auto; width: 220px;"> 
                        <p><span class="ui-icon ui-icon-info" style="float: left; margin-right: 0.3em;"></span>
                        No hay partidas para realizar cierre.
                    </div>
                </div>
                <br>
                <?php 
            }            
            $db->free_result($qTMP);
        }
        
    }
    else {
        ?>
        <div class="ui-widget" style="border: 0px solid white; width: 440px; height: auto; vertical-align: bottom;" align="center">
            <div class="ui-state-error ui-corner-all" style="margin-top: 0px; padding: 0pt 0.7em; height: auto; width: 220px;"> 
                <p><span class="ui-icon ui-icon-alert" style="float: left; margin-right: 0.3em;"></span>
                Año y mes ya cerrado.</p>
           </div>
        </div>
        <br>
        <?php
   }

}

function getCicloActivo($db) {
    //header("Content-Type: text/html; charset=iso-8859-1");
    $empresa = getParam("empresa");
    
    $strQuery = "SELECT codigo, MONTH(fecha_inicio) AS mes, YEAR(fecha_inicio) AS anio 
                 FROM   cllg_contab_ciclo 
                 WHERE  activo = '1' AND fk_empresa = '{$empresa}'";
    $qTMP = $db->query($strQuery);
    $rTMP = $db->fetch_array($qTMP);
    $db->free_result($qTMP);
    
    
    if( is_array($rTMP) ) {
    $arrMeses = array("1"=>"Enero", "2"=>"Febrero", "3"=>"Marzo", "4"=>"Abril", "5"=>"Mayo", "6"=>"Junio", "7"=>"Julio", "8"=>"Agosto", "9"=>"Septiembre", "10"=>"Octubre", "11"=>"Noviembre", "12"=>"Diciembre" );
    ?>
    <div class="ui-widget" style="border: 0px solid white; width: 440px; height: auto; vertical-align: bottom;" align="center">
        <div class="ui-state-highlight ui-corner-all" style="margin-top: 0px; padding: 0pt 0.7em; height: auto; width: 220px;"> 
            <p><span class="ui-icon ui-icon-info" style="float: left; margin-right: 0.3em;"></span>
            Año configurado: <?php print $rTMP["anio"]; ?><br>
            Mes configurado: <?php print $arrMeses[$rTMP["mes"]]; ?></p>
        </div>
    </div>
    <br>
    <?php
    }
    else {
        ?>
        <div class="ui-widget" style="border: 0px solid white; width: 440px; height: auto; vertical-align: bottom;" align="center">
            <div class="ui-state-highlight ui-corner-all" style="margin-top: 0px; padding: 0pt 0.7em; height: auto; width: 220px;"> 
                <p><span class="ui-icon ui-icon-info" style="float: left; margin-right: 0.3em;"></span>
                Año configurado: Ninguno<br>
                Mes configurado: Ninguno</p>
            </div>
        </div>
        <br>
        <?php        
    }
    
}

function ultimoDiaMes($mes,$anio) {
    $fecha = "";
    for ($dia=28;$dia<=31;$dia++) {
        if(checkdate($mes,$dia,$anio)) 
            $fecha="$anio-$mes-$dia";
    }
    return $fecha;

}
?>